Классы в Python: практика
В этом уроке вы поработаете с модулем выдачи квестов. Часть кода уже написана, вам нужно доработать его с учётом парадигмы ООП.
2.
Добавьте в класс
Quest два метода:accept_quest()— чтобы игрок мог взять квест;pass_quest()— чтобы игрок мог завершить квест.
Чтобы зафиксировать время начала и завершения квеста, в конструктор класса
Quest добавьте свойства start_time и end_time. Определите их начальные значения как None.В метод
accept_quest() в свойство start_time запишите текущее время. Метод должен вернуть фразу 'Начало "{название_квеста}" положено.'В метод
pass_quest() в свойство end_time тоже запишите текущее время. Также в этом методе объявите переменную completion_time и посчитайте в ней разницу между временем завершения и начала квеста. Метод должен вернуть фразу 'Квест "{название_квеста}" окончен. Время выполнения квеста: {разница_между_завершением_и_началом_квеста}'.Также добавьте в оба метода ограничения:
- Для
accept_quest(): если при вызове метода для объекта класса в свойствеend_timeуже записано значение, то нужно вернуть строку'С этим испытанием вы уже справились.'. Игрок уже выполнил квест, вызвать его повторно нельзя. - Для
pass_quest(): если при вызове метода у объекта квеста свойствоstart_timeравноNone, должна вернуться строка'Нельзя завершить то, что не имеет начала!'. Нельзя завершить квест, который игрок не начал выполнять.
Подсказка
- Для свойств конструктора класса
start_timeиend_timeпоставьтеNoneкак начальное значение. - Методы
accept_quest()иpass_quest()должны принимать единственный параметр —self. - Для записи текущего времени используйте метод
now()модуляdatetime. - Следите за пунктуацией и орфографией в принтах.
Код
xxxxxxxxxx52
print(new_quest)1
# Импортируйте datetime. 2
3
# Импортируйте time.4
5
6
class Quest:7
def __init__(self, name, description, goal):8
self.name = name9
self.description = description10
self.goal = goal11
# Допишите два свойства класса.12
13
# Напишите методы приема и сдачи квеста.14
15
16
quest_name = 'Сбор пиксельники'17
quest_goal = 'Соберите 12 ягод пиксельники.'18
quest_description = '''19
В древнем лесу Кодоборье растёт ягода "пиксельника".20
Она нужна для приготовления целебных снадобий.21
Соберите 12 ягод пиксельники.'''22
23
new_quest = Quest(quest_name, quest_description, quest_goal) 24
25
print(new_quest.pass_quest())26
print(new_quest.accept_quest())27
time.sleep(3)28
print(new_quest.pass_quest())29
print(new_quest.accept_quest())